package com.opc.Config;
import org.springframework.context.annotation.Bean;  // 用于 @Bean 注解
import org.springframework.context.annotation.Configuration;  // 用于 @Configuration 注解
import org.springframework.web.socket.config.annotation.*;
import org.springframework.web.socket.WebSocketHandler;  // WebSocketHandler 接口
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
//import org.springframework.web.socket.server.ServerEndpointExporter;
@Configuration
@EnableWebSocketMessageBroker // 使用这个注解来启用消息代理
public class WebSocketConfiguration1 implements WebSocketMessageBrokerConfigurer {

    //2.基于 Spring 的 WebSocket 消息代理，
    // 以支持通过 WebSocket 的消息处理，并允许使用 STOMP 等协议进行复杂的消息传递

//    应用需要复杂的消息处理，支持 STOMP，或需要多点广播与订阅，
//    使用 Spring WebSocket Message Broker 是更合适的选择。

//    @Override
//    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
//        registry.addHandler(myWebSocketHandler(), "/ws/{sid}")
//                .setAllowedOrigins("*"); // 允许所有来源
//    }

    @Bean
    public WebSocketHandler myWebSocketHandler() {
        return new MyWebSocketHandler();
    }

//    @Override
//    public void registerStompEndpoints(StompEndpointRegistry registry) {
//        registry.addEndpoint("/ws").withSockJS(); // 注册 STOMP 端点
//    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws") // 注册 STOMP 端点
                .setAllowedOrigins("*") // 允许所有来源
                .withSockJS(); // 启用 SockJS 支持（可选）
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic"); // 配置消息代理
        config.setApplicationDestinationPrefixes("/app"); // 设置应用前缀
    }
}